From 489f99911abf7a3d4ba1441e3e1c1cf16d20c887 Mon Sep 17 00:00:00 2001 From: Tor Lillqvist Date: Wed, 6 Jul 2005 15:30:10 +0000 Subject: [PATCH] Don't create the GdkPixbuf until we know that we have something to put in 2005-07-06 Tor Lillqvist * gdk/win32/gdkcursor-win32.c (gdk_win32_icon_to_pixbuf_libgtk_only): Don't create the GdkPixbuf until we know that we have something to put in it. --- ChangeLog | 6 ++++++ ChangeLog.pre-2-10 | 6 ++++++ ChangeLog.pre-2-8 | 6 ++++++ gdk/win32/gdkcursor-win32.c | 8 +++++--- 4 files changed, 23 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0bd5eb5435..335045915d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-07-06 Tor Lillqvist + + * gdk/win32/gdkcursor-win32.c + (gdk_win32_icon_to_pixbuf_libgtk_only): Don't create the GdkPixbuf + until we know that we have something to put in it. + 2005-07-05 Matthias Clasen * gtk/gtkspinbutton.c (gtk_spin_button_new_with_range): Add some diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 0bd5eb5435..335045915d 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,9 @@ +2005-07-06 Tor Lillqvist + + * gdk/win32/gdkcursor-win32.c + (gdk_win32_icon_to_pixbuf_libgtk_only): Don't create the GdkPixbuf + until we know that we have something to put in it. + 2005-07-05 Matthias Clasen * gtk/gtkspinbutton.c (gtk_spin_button_new_with_range): Add some diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 0bd5eb5435..335045915d 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,9 @@ +2005-07-06 Tor Lillqvist + + * gdk/win32/gdkcursor-win32.c + (gdk_win32_icon_to_pixbuf_libgtk_only): Don't create the GdkPixbuf + until we know that we have something to put in it. + 2005-07-05 Matthias Clasen * gtk/gtkspinbutton.c (gtk_spin_button_new_with_range): Add some diff --git a/gdk/win32/gdkcursor-win32.c b/gdk/win32/gdkcursor-win32.c index d2dd6de8ca..54af4a82ce 100644 --- a/gdk/win32/gdkcursor-win32.c +++ b/gdk/win32/gdkcursor-win32.c @@ -426,14 +426,15 @@ gdk_win32_icon_to_pixbuf_libgtk_only (HICON hicon) if (!GDI_CALL (GetIconInfo, (hicon, &ii))) return NULL; - memset (&bmi, 0, sizeof (bmi)); - bmi.bi.biSize = sizeof (bmi.bi); if (!(hdc = CreateCompatibleDC (NULL))) { WIN32_GDI_FAILED ("CreateCompatibleDC"); goto out0; } + memset (&bmi, 0, sizeof (bmi)); + bmi.bi.biSize = sizeof (bmi.bi); + if (!GDI_CALL (GetDIBits, (hdc, ii.hbmColor, 0, 1, NULL, (BITMAPINFO *)&bmi, DIB_RGB_COLORS))) goto out1; @@ -443,13 +444,14 @@ gdk_win32_icon_to_pixbuf_libgtk_only (HICON hicon) bmi.bi.biBitCount = 32; bmi.bi.biCompression = BI_RGB; bmi.bi.biHeight = -h; - pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8, w, h); + bits = g_malloc0 (4 * w * h); /* color data */ if (!GDI_CALL (GetDIBits, (hdc, ii.hbmColor, 0, h, bits, (BITMAPINFO *)&bmi, DIB_RGB_COLORS))) goto out2; + pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8, w, h); pixels = gdk_pixbuf_get_pixels (pixbuf); rowstride = gdk_pixbuf_get_rowstride (pixbuf); no_alpha = TRUE; -- 2.30.2